Clock-Tree Transformation in High-Speed ASIC Implementation

ABSTRACT

A method includes providing a first clock tree including a root clock and a plurality of levels of integrated clock gates (ICGs) under the root clock. The plurality of levels of ICGs in the first clock tree is flattened to generate a second clock tree including a plurality of ICGs in a same level under the root clock. A fake module is formed to reserve a region between the root clock and the plurality of ICGs. The fake module includes the root clock as a first input, and a first plurality of outputs coupled to clock-inputs of the plurality of ICGs. A skew balancing is performed on the second clock tree using a clock tree synthesis (CTS) tool to generate a third clock tree, wherein no buffers are inserted into the fake module, and wherein buffers are inserted by the CTS tool under the plurality of ICGs.

BACKGROUND

In synchronized circuits, a clock tree is generally used for the purposeof distributing a common clock signal to many sequential elements, whichinclude flip flops, latches, and memories, so that the sequentialelements have a uniform timing. Manual-based structures like H treemeshes, and tool-based balanced buffer trees are widely used in theclock trees for the distribution of the clock signal.

Differences in the arrival of the clock signal at two or more clockedelements can result in errors in the synchronous system. Clock skew isthe difference in the time points of the clock signal arriving atdifferent clock-receiving units such as flip flops. The clock skew cancause errors in the synchronous system as the clocked elements aretriggered at different points in time. One such error is called holdviolation, which occurs when the clock skew between two sequentiallyconnected flips flops is greater than the data propagation delay fromthe first flip flop to the second flip flop; allowing data at the firstflip flop output to race through the second flip flop and bypassing afull clock cycle.

The clock skew is always a major obstacle for high-speed circuit design.Conventionally, to reduce the clock skew in ASIC implementations,clock-tree synthesis tools, such as Synopsys' CTS tool, were used tobalance the clock tree. The CTS tools insert and adjust buffers alongthe paths into different leaf points of the clock tree, so that theclock signal arrives at the leaves of the clock tree at substantiallythe same time. The CTS tools balance the clock tree under the constraintthat the clock insertion delay, defined as the time elapsed from theclock arrival at the root of the tree to the arrival at the leaf pointsdoes not exceed certain budget. This is because a long insertion delayleads to undesirable, high clock tree power consumption. Also, clocktrees with long insertion delays are more susceptible to manufacturingon-chip variation (OCV), which injects uncertainty in the clockinsertion delay, exacerbating the clock skew problem. The clockinsertion delay budget, in general, places a limit on the amount ofclock skew that CTS tools are able to reduce.

With the advancement in the integrated circuits, faster circuits aremanufactured. For example, embedded ASIC cores have achieved a veryhigh-speed such that the solution provided by the CTS tools can nolonger meet the clock skew requirement of the high-speed circuits. Toovercome the problem, many resort to manual design methods to form Htrees and mesh structures, which are common in traditional high-end CPUdesigns. This may generate clock trees with small clock skews. However,due to the huge size of some circuits, it may take very long time toperform the manual design, and the time-to-market is significantlyaffected.

Another difficulty in adopting H tree-/mesh-based clock trees in ASICimplementation is caused by the widespread use of the integrated clockgates (ICGs) for power reduction. The ICGs, which may be inserted intothe clock tree manually by designers or automatically by synthesistools, save power by shutting off sections of clock tree that are notrequired for an operation, preventing the controlled logic from togglingand consuming power. Because ICG inputs and outputs are logicallydistinct, inserting ICGs into the clock trees render the tree fragmentedand unsuited for H tree-/mesh methodology, which can only be applied onan un-fragmented net.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the embodiments, and the advantagesthereof, reference is now made to the following descriptions taken inconjunction with the accompanying drawings, in which:

FIG. 1 illustrates a clock tree with multiple levels of integrated clockgates (ICGs);

FIG. 2 illustrates a simplified, alternative view of the multi-levelclock tree as shown in FIG. 1 with one ICG per level;

FIG. 3 schematically illustrates a block diagram of a clock treeimplemented in accordance with embodiments, wherein the clock tree doesnot include buffers inserted by a clock tree synthesis (CTS) tool;

FIG. 4A illustrates a flattened clock tree generated from the clock treeshown in FIG. 2;

FIG. 4B illustrates the formation of a fake module during the placementstage of chip layout to substitute the root clock net in FIG. 4A;

FIG. 5 illustrates the skew balancing performed on the clock tree,wherein during the skew balancing, no buffers are inserted into the fakemodule;

FIG. 6 illustrates a clock distributing network comprising H trees and amesh structure for the root clock;

FIG. 7 illustrates the replacement of the fake module with the clockdistributing network;

FIG. 8 illustrates an enablement signal test circuit for combiningenablement signals and test enablement signals in the flattening of aclock tree;

FIG. 9 illustrates an exemplary circuit implementation of the circuitdiagram shown in FIG. 8;

FIG. 10 illustrates an ICG comprising an enablement signal test circuitfor combining the enablement signals and the test enablement signals inthe flattening of a clock tree, wherein an AND-OR gate is built insidethe ICG; and

FIG. 11 illustrates an exemplary circuit implementation of the circuitdiagram shown in FIG. 10.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

The making and using of the embodiments of the disclosure are discussedin detail below. It should be appreciated, however, that the embodimentsprovide many applicable inventive concepts that can be embodied in awide variety of specific contexts. The specific embodiments discussedare merely illustrative, and do not limit the scope of the disclosure.

A novel clock tree transformation method is provided in accordance withan embodiment. The variations and the operation of the embodiment arediscussed. Throughout the various views and illustrative embodiments,like reference numbers are used to designate like elements. Throughoutthe description, a flip flop is referred to as being “under” anintegrated clock gate (ICG) or a buffer if the flip flop is at least onelevel under, and receives a clock signal from the respective ICG/buffer.In addition, although flip flops are used as exemplary clock-drivingunits, other clock-sinking units that receive, and are driven by, theclock signals may be used.

FIGS. 1 through 7 briefly illustrates the transformation of a clocktree, which may be in a legacy core, to a clock tree having low clockskews. The resulting clock tree is suitable for being used in high-speedcircuits, such as ASIC embedded circuits. FIG. 1 illustrates clock tree10. In an embodiment, clock tree 10 is a clock tree for a legacy core.Root clock 12 is provided to the clock tree, and is supplied to ICGsICG11, ICG12, ICG23, etc., and free running flip flops (FFs), which aresymbolized as FF0. First-level ICGs ICG11 and ICG12 are immediatelyunder root clock 12. Second-level ICGs ICG21, ICG22, ICG23, and ICG24are immediately under, and receive clock signals from, first-level ICGsICG11 and ICG12. It is noted that there may be many additional ICGs inthe first level and second level. In addition, there may be more levelsof ICGs, although two levels are shown. Under each level of ICGs, theremay be clock-gated flip flops (FF) such as FF11, FF12, FF21, FF21, FF22,FF24, and the like. It is further noted that although only one flip flopis illustrated under each ICG, the illustrated flip flop represents oneor a plurality of flip flops that is under the same ICG.

In an embodiment, a clock tree may need to be transformed to enable alow-power operation with an additional level of clock-gating before thesubsequent flattening is performed. Accordingly, some low-level ICGs maybe inserted first. In an exemplary embodiment, an originally providedclock does not include some of low-level ICGs, such as ICGs ICG21,ICG22, ICG31, ICG32, and ICG24, while other ICGs such as ICG11, ICG12,and ICG23 were originally included. The ICG insertion may be performedby either a logic synthesis tool, such as Synopsys' Design Compiler, ora power optimization tool, such as Synopsys' Power Compiler. It may alsobe performed manually. Logic synthesis tool 14 inserts ICGs to locationswhere they are needed, for example, one level higher than the leaf flipflops, so that the resulting clock tree 10 has a reduced powerconsumption. In the illustrated exemplary embodiment, ICGs ICG21, ICG22,ICG31, ICG32, and ICG24 are inserted.

FIG. 2 illustrates an alternative block diagram of clock tree 10 asshown in FIG. 1. The illustrated ICG1 represents all first-level ICGs(such as ICG11 and ICG12) in FIG. 1. The illustrated ICG2 represents allsecond-level ICGs (such as ICG21, ICG22, ICG23, and ICG24) in FIG. 1.The illustrated ICG3 represents all third-level ICGs (such as ICG31 andICG32) in FIG. 1. FIG. 2 also illustrates enable signals ICG1_E,ICG1_TE, ICG2_E, ICG2_TE, ICG3_E, and ICG3_TE, wherein the letters “E”and “TE” following the respective ICG notations represent “Enable”signals and “Test Enable” signals, respectively. The respective inputsof the ICGs and buffers are thus referenced to as “enablement” signalsand “test enablement” inputs.

By applying the clock transformation methods pertaining to theembodiments, clock tree 20 as shown in FIG. 3 is to be formed. Clocktree 20 receives root clock 12, and distributes root clock 12 to H trees16. Optionally, mesh structure 18 may be added to receive the clocksfrom H trees 16, although mesh structure 18 may also be omitted. H trees16 and the optional mesh structure 18 in combination are also referredto as root clock distribution network 42 throughout the description. Inthe transformation from clock tree 10 as shown in FIG. 1 to clock tree20 as shown in FIG. 3, clock tree 10 is flattened, so that the resultingclock tree 20 include no more than one level of ICGs and buffers. Theprime sign “′” is used in FIG. 3 following the notations of ICGs toindicate that the ICGs in FIG. 3 have been modified from the respectiveICGs in FIG. 1. For example, ICG31′ as in FIG. 3 actually combines thefunction of ICG23 and ICG31 in FIG. 1. Each of the ICGs in the flattenedclock tree 20 receives the root clock 12 from root clock distributionnetwork 42 directly. Further, buffers (represented by a buffer denotedas “BUF”) are added for the flip flops FF0 that are not under any ICG.The clock signals received by the ICGs in FIG. 3 are not gated by anyadditional ICGs. The clock tree transformation steps for forming clocktree 20 as shown in FIG. 3 is discussed as follows and illustrated inFIGS. 4A through 7.

First, as shown in FIG. 4A, clock tree 10 as shown in FIGS. 1 and 2 isflattened, generating clock tree 38. The flattening may be performed byrunning a script, for example, although any other applicable methods maybe used. After the flattening, there is only one level of ICGs includingICG1′, ICG2′, ICG3′, and the like. Again, each of ICGs ICG1′, ICG2′, andICG3′ may actually represent a group of ICGs transformed from ICGspreviously in the same level before the flattening. For example, theillustrated ICG1′ represents ICGs ICG11 and ICG12 in FIG. 3, theillustrated ICG2′ represents ICGs ICG21′, ICG22′, and ICG24′ in FIG. 3,and the illustrated ICG3′ represents ICGs ICG31′ and ICG32′ in FIG. 3.The buffers represented by BUF0 are also added to balance the timedelay, so that the clock signal reaches the free running flip-flops FF0,which are directly under root clock 12, at roughly the same time as thetime point the clock signal reaches the flip flops under ICGs ICG1′,ICG2′, and ICG3′. Similarly, each of the illustrated flip-flops FF0,FF1, FF2, and FF3 may represent a plurality of flip flops.

For the flip flops under ICGs such as ICG1′, ICG2′, and ICG3′, and theflip flops under BUFs such as BUF0, a cloning may be performed tobalance the loading, so that the number of flip flops under each of ICGsICG1′, ICG2′, and ICG3′ and buffer(s) BUF0 are in a pre-defined range.The excess flip flops under ICGs ICG1′, ICG2′, and ICG3′ arere-distributed to cloned ICGs. For example, ICGs ICG1″ and ICG1′″ arecloned from ICG ICG1′, and ICGs ICG2″ and ICG2′″ are cloned from ICGICG2′. The cloned ICGs share the same enablement signals as therespective ICGs they are cloned from. For example, the cloned ICGs ICG1″and ICG1″′ share the same enablement signals ICG1_E and ICG1_TE with ICGICG1′. The excess number of flip flops (such as FF1) that wereoriginally under one ICG, for example, ICG1′, may now by spread to underthe cloned ICGs such as ICG1″ and ICG1′″. In an embodiment, no cloningis performed to ICGs ICG3′. This is because ICG3′ was transformed fromICG3, which was inserted by a tool for power-saving. Typically, a loadrange is given for the insertion such that there is no need for cloningin the flattening process.

Similar to the cloning of ICGs, buffers are also cloned to balanceloading. For example, buffers BUF0′ and BUF0′ are cloned from bufferBUF0, and the flip flops originally under buffers BUF0 werere-distributed to the cloned buffers BUF0′ and BUF0″, so that thenumbers of flip flops directly under all buffers and ICGs are in thesimilar range. Throughout the description, an ICG (or buffer) and thecorresponding cloned ICGs (or buffers) and the respective flip flopsunder the ICG and the cloned ICGs are referred to as being in a samegroup denoted as an ICG/buffer/FF group. FIG. 4A illustrates a pluralityof ICG/buffer/FF groups 34.

ICG/buffer/FF groups 34 as shown in FIG. 4A are then transformed to alayout. FIG. 4B schematically illustrates chip representation 36, whichis the layout of a physical chip, but is not a physical chip itself. Thelayout of chip representation 36, however, will be later implemented ona physical chip. ICG/buffer/FF groups 34 as shown in FIG. 4A are laidout in chip representation 36. The physical locations of clock-inputpins 30 (please refer to FIG. 8) of ICG/buffer/FF groups 34 in dierepresentation 36 are thus known. Further, the element (denoted as “ICG0or BUF”) that outputs root clock 12 is laid out, and hence the physicallocation of output pin 32 is also known. The necessary metal connectionsfor the layout are placed and routed.

After the step as shown in FIG. 4B, the locations of pins 30 and 32 indie representation 36 can be extracted. A die region (also referred toas a fake module), which is marked as region 40, is reserved, whereindie region 40 has the boundaries interfacing pins 30 and 32. FIG. 5illustrates the circuit diagram obtained from the clock tree shown inFIG. 4A, wherein fake module is inserted. Fake module 40 includes theregion between the output pin 32 of ICG0 and input pins 30 ofICGs/buffers groups 34. The resulting clock tree in FIG. 5 is denoted asclock tree 44, which is an intermediated clock tree. Fake module 40 hasinterface pins overlapping pins 30 and 32. Therefore, as shown in FIGS.4B and 5, physically, fake module 40 represents a die region in dierepresentation 36 (FIG. 4B), while logically, fake module 40 representsthe level between root clock 12 and the buffers/ICGs generated in theflattening and cloning steps (FIG. 5).

The design as shown in FIG. 5, including the location of pins 30 and 32,is then provided to CTS tool 14 to perform a skew balancing. In the skewbalancing, there are two types of flip flops that need to beskew-balanced, the flip flops FF0 under buffers BUF, and the flip flopsunder ICGs such as FF1 and FF2. The skew balancing is to balance theclock insertion delay under each of ICGs and under each of buffers BUFs,which ICGs/buffers are directly under the root clock with no additionalbuffers/ICGs therebetween, so that the clock insertion delay under theICGs or buffers are in a similar range. For example, after theflattening stage of this embodiment that transforms clock tree 10 toclock tree 38, there are clock skews in each ICG group. Also, becausethe number of flip flops in each ICG group could vary between, forexample, 4 and 32, the skews are likely to be different betweendifferent ICG groups. To balance the skew under buffers BUF0, additionalbuffers such as BUF0A and BUF0B may be inserted below each or some ofbuffers BUF0, and flip flops FF0 (FIG. 4A) may be evenly redistributedto under BUF0A and BUF0B as FF0A and FF0B (FIG. 5). Additional bufferssuch as BUF1A and BUF1B may also be inserted below each or some of ICGssuch as ICG1′, and flip flops FF1 (FIG. 4A) may be evenly redistributedto under BUF1A and BUF1B as FF1B and FF1A (FIG. 5). In addition, morebuffers such as BUF0C and BUF3A may be inserted to add delay.

In an embodiment, in the skew balancing step, CTS tool 14 does notinsert any buffer to the region reserved for fake module 40.Alternatively stating, all of the inserted buffers will be at the levelunder the ICGs and buffers that receive the clock output from fakemodule 40, and no buffers are inserted at the level higher than theICGs. In die representation 36 (FIG. 4B), no buffers will be laid out indie region 40 and connected to pins 30 and/or 32.

CTS tool 14 inserts buffers to balance the skew for all buffers andICGs, so that the delays between the leaf flip flops and the buffers andICGs one level above them are substantially the same. It is realizedthat because of the existence of the fake module, CTS tool 14 is able toview all ICGs at the same time from the view point of root clock 12.Accordingly, if CTS tool 14 is to run the skew balancing separately foreach ICG, the results obtained from the multiple runs will not likely bethe same as each other. By invoking the CTS to perform skew balancing ofall ICGs in one shot, the embodiments enable the reduction of clock skewto a very low level that satisfies the requirement of very fast circuitssuch as ASIC embedded circuits. On the other hand, by using CTS tool 14to perform the skew balancing rather than performing this task manually,the most time-consuming work may be performed rapidly.

FIG. 6 illustrates the design of root clock distribution network 42,which includes H trees 16 and optional mesh 18. Since the design work ofH trees 16 and mesh 18 is relatively less labor-extensive, it may beperformed manually without the concern of significantly affectingtime-to-market. Alternatively, a tool may be used to design H trees 16and mesh 18. Since the locations of pins 30 and 32 as shown in FIG. 5 isknown, root clock distribution network 42 may have the same root clockpin location as pin 32 as shown in FIG. 4B, and the output pin locationsof root clock distribution network 42 also match the locations ofclock-input pins 30 as shown in FIG. 4B. It is appreciated that thedesign of root clock distribution network 42 as shown in FIG. 6 may beperformed before, after, or simultaneously as, the skew balancing workas shown in FIG. 5.

Fake module 40 as shown in FIG. 5 is then replaced with root clockdistribution network 42 as shown in FIG. 6, and clock tree 20 as shownin FIG. 7 is generated. The resulting clock tree 20 is also the clocktree 20 as shown in FIG. 3, except that some details such as cloned ICGsand inserted buffers are not shown in FIG. 3. Since the pin locations offake module 40 match the pin locations of root clock distributionnetwork 42, root clock distribution network 42 may be integrated withthe structure as shown in FIG. 5 seamlessly.

Referring back to FIG. 4A, it is realized that to flatten a clock tree,the enable signals needs to be processed appropriately. For example,referring to FIG. 4A, to enable ICG2, both the enablement signals ICG1_Eand ICG2_E (also refer to FIG. 2) need to be enabled (to have logic highsignals, for example). To ensure this condition is met, in the flattenedclock tree as shown in FIG. 4A, an “AND” operation need to be performedon the enablement signals ICG1_E and ICG2_E, and an “AND” operationneeds to be performed to the test enablement signals ICG1_TE andICG2_TE. FIG. 8 illustrates a block diagram of an enablement signal testcircuit for checking these conditions, wherein AND gates 50 and 52 areused to check enablement signals “E1” (which may be ICG1_E, for example)and “E2” (which may be ICG2_E, for example) and to check the testenablement signals “TE1” and “TE2.” When either ((E1&E2)==1) or((TE1&TE2)==1) is satisfied, the input-clock received at the clock-inputclk/30 of the respective ICG is sent to output gate-clk.

It is realized, however, in an implementation of the circuit as shown inFIG. 9, each of AND gates 50 and 52 needs to be implemented with twolevels of inverters/toggles (marked as level 1 and level 2), and OR gate54 also needs to be implemented with two levels of inverters (marked aslevel 3 and level 4). The time for checking the enablement signals isthus long. While the extra delay may not present a problem to the testenablement signals “TE1” and “TE2”, it will very likely introduce newtiming problems to the enablement signals “E1” and “E2”. This is becausethese two signals are used as functional enables and are usually slow toproduce in the actual chip.

FIG. 10 illustrates an implementation scheme for solving the timingissue. A new ICG 60 is provided, wherein ICG 60 includes AND-OR gate 62,which is built inside ICG 60. The inputs of AND-OR gate 62 receiveenablement signal E1 and E2. AND gate 64 is outside ICG 60, and is usedto ensure that test enablement signals TE1 and TE2 meet therequirements.

FIG. 11 illustrates an exemplary implementation of AND-OR gate 62. It isobserved that only two inverter/toggle levels, level 1 and level 2, areused. Accordingly, AND-OR gate 62 is faster than the combination of ANDgate 50 and OR gate 54 as shown in FIG. 8, and there is no new timingissue introduced. The ICG 60 as shown in FIG. 9 is used as the ICGs ineach of FIGS. 3 through 7.

In the embodiments, by flattening clock trees without allowing buffersto be inserted above the flattened buffers and ICGs, CTS tools may beused to perform the labor-intensive skew balancing work. Further, withthe clock trees being flattened, the H trees and the mesh structure maybe designed manually. Accordingly, the methods pertaining to theembodiments enable the reduction of clock skews of the clock tree to avery low level.

In accordance with embodiments, a method includes providing a firstclock tree including a root clock and a plurality of levels of ICGsunder the root clock. The plurality of levels of ICGs in the first clocktree is flattened to generate a second clock tree including a pluralityof ICGs in a same level under the root clock. A fake module is formed toreserve a region between the root clock and the plurality of ICGs. Thefake module includes the root clock as a first input, and a firstplurality of outputs coupled to clock-inputs of the plurality of ICGs. Askew balancing is performed on the second clock tree using a CTS tool togenerate a third clock tree, wherein no buffers are inserted into thefake module, and wherein buffers are inserted by the CTS tool under theplurality of ICGs.

In accordance with other embodiments, a method includes providing afirst clock tree including a plurality of levels of ICGs. The pluralityof levels of ICGs is flattened to generate a second clock tree includinga plurality of ICG groups at a same level and under a root clock of thesecond clock tree. The plurality of ICG groups in the second clock treeis placed and routed in a die representation. A pin location of the rootclock and pin locations of clock-inputs of the ICG groups are extractedfrom the die representation. A fake module is formed to reserve a regionof the die representation, wherein the region is between the pinlocation of the root clock and the pin locations of clock-inputs of theICG groups. A clock distribution network having H trees is designed,wherein the clock distribution network has an input pin and a pluralityof output pins, with a location of the input pin matching the pinlocation of the root clock, and pin locations of the plurality of outputpins matching the pin locations of the clock-inputs of the ICG groups.The fake module is replaced with the clock distribution network togenerate a third clock tree, with the input pin of the clockdistribution network connected to the root clock, and the plurality ofoutput pins of the clock distribution network matching respective onesof the clock-inputs of the ICG groups.

In accordance with yet other embodiments, an ICG includes a firstenablement input; a second enablement input; an AND-OR gate comprising afirst, a second, and a third input, wherein the first and the secondinputs of the AND-OR gate are coupled to the first and the secondenablement inputs, respectively; a clock input; and a clock output.

Although the embodiments and their advantages have been described indetail, it should be understood that various changes, substitutions andalterations can be made herein without departing from the spirit andscope of the embodiments as defined by the appended claims. Moreover,the scope of the present application is not intended to be limited tothe particular embodiments of the process, machine, manufacture, andcomposition of matter, means, methods and steps described in thespecification. As one of ordinary skill in the art will readilyappreciate from the disclosure, processes, machines, manufacture,compositions of matter, means, methods, or steps, presently existing orlater to be developed, that perform substantially the same function orachieve substantially the same result as the corresponding embodimentsdescribed herein may be utilized according to the disclosure.Accordingly, the appended claims are intended to include within theirscope such processes, machines, manufacture, compositions of matter,means, methods, or steps. In addition, each claim constitutes a separateembodiment, and the combination of various claims and embodiments arewithin the scope of the disclosure.

1. A method comprising: providing a first clock tree comprising a rootclock and a plurality of levels of integrated clock gates (ICGs) underthe root clock; flattening the plurality of levels of ICGs in the firstclock tree to generate a second clock tree comprising a plurality ofICGs in a same level under the root clock; forming a fake module toreserve a region between the root clock and the plurality of ICGs,wherein the fake module comprises the root clock as a first input, and afirst plurality of outputs coupled to clock-inputs of the plurality ofICGs; and performing a skew balancing on the second clock tree using aclock tree synthesis (CTS) tool to generate a third clock tree, whereinno buffers are inserted into the fake module, and wherein buffers areinserted by the CTS tool under the plurality of ICGs.
 2. The method ofclaim 1 further comprising designing a clock distribution networkcomprising H trees, wherein the clock distribution network comprises asecond input matching a location of the first input in a dierepresentation, and a second plurality of outputs matching locations ofthe first plurality of outputs in the die representation.
 3. The methodof claim 2 further comprising replacing the fake module in the secondclock tree with the clock distribution network, wherein the second inputreplaces the first input, and the second plurality of outputs replacesthe first plurality of outputs.
 4. The method of claim 2, wherein theclock distribution network further comprises a mesh structure connectedto the H trees, wherein the second plurality of outputs of the clockdistribution network is connected to the mesh structure.
 5. The methodof claim 1 further comprising cloning portions of the plurality of ICGsin the second clock tree.
 6. The method of claim 1, wherein the step ofskew balancing comprises inserting buffers directly under the pluralityof ICGs in the second clock tree.
 7. The method of claim 1, wherein eachof ICGs in the third clock tree comprises an AND-OR gate comprising twoinputs, wherein each of the two inputs is coupled to an enablementsignal of the clock tree.
 8. The method of claim 7, wherein the thirdclock tree further comprises an AND gate comprising two inputs, eachcoupled to a test enablement signal of the third clock tree, and whereinan additional input of the AND-OR gate is coupled to an output of theAND gate.
 9. A method comprising: providing a first clock treecomprising a plurality of levels of integrated clock gates (ICGs);flattening the plurality of levels of ICGs in the first clock tree togenerate a second clock tree comprising a plurality of ICG groups at asame level and under a root clock of the second clock tree; placing androuting the plurality of ICG groups in the second clock tree in a dierepresentation; extracting a pin location of the root clock and pinlocations of clock-inputs of the ICG groups from the die representation;forming a fake module to reserve a region of the die representation,wherein the region is between the pin location of the root clock and thepin locations of clock-inputs of the ICG groups; designing a clockdistribution network comprising H trees, wherein the clock distributionnetwork comprises an input pin and a plurality of output pins, with alocation of the input pin matching the pin location of the root clock,and pin locations of the plurality of output pins matching the pinlocations of the clock-inputs of the ICG groups; and replacing the fakemodule with the clock distribution network to generate a third clocktree, with the input pin of the clock distribution network connected tothe root clock, and the plurality of output pins of the clockdistribution network matching respective ones of the clock-inputs of theICG groups.
 10. The method of claim 9, wherein the clock distributionnetwork further comprises a mesh structure connected to the H trees, andwherein the plurality of output pins of the clock distribution networkis connected to the mesh structure.
 11. The method of claim 9 furthercomprising performing a skew balancing on the second clock tree using aclock tree synthesis (CTS) tool to generate a third clock tree, whereinduring the step of skew balancing, no buffers are inserted into the fakemodule and between the root clock and the ICG groups, and wherein aplurality of buffers are inserted into a level under ICGs in theplurality of ICG groups.
 12. The method of claim 11 further comprising:cloning the ICGs in the plurality of ICG groups in the second clock treeto generate cloned ICGs; and redistributing flip flops under theplurality of ICGs in the second clock tree to under the cloned ICGs. 13.The method of claim 11, wherein the step of skew balancing comprisesinserting buffers directly under ICGs in the ICG groups.
 14. The methodof claim 11, wherein each ICG in the third clock tree comprises anAND-OR gate comprising two inputs, wherein each of the two inputs iscoupled to an enablement signal of the third clock tree.
 15. The methodof claim 14, wherein the third clock tree further comprises an AND gatecomprising two inputs, each coupled to a test enablement signal of thethird clock tree, and wherein an additional input of the AND-OR gate iscoupled to an output of the AND gate.
 16. A device comprising: anintegrated clock gate (ICG) comprising: a first enablement input; asecond enablement input; an AND-OR gate comprising a first, a second,and a third input, wherein the first and the second inputs of the AND-ORgate are coupled to the first and the second enablement inputs,respectively; a clock input; and a clock output.
 17. The device of claim16 further comprising an AND gate comprising an output coupled to thethird input of the AND-OR gate.
 18. The device of claim 16, wherein theICG is a portion of a clock tree, and wherein the clock tree furthercomprises two test enablement signal nodes coupled to two inputs of theAND gate.
 19. The device of claim 16, wherein the AND-OR gate has nomore than two levels of inverters.
 20. The device of claim 19, whereinthe AND-OR gate consists of two levels of inverters.